{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Uplift Trees Example with Synthetic Data\n",
    "\n",
    "In this notebook, we use synthetic data to demonstrate the use of the tree-based algorithms."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.320170Z",
     "start_time": "2021-11-29T22:50:01.628054Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "from causalml.dataset import make_uplift_classification\n",
    "from causalml.inference.tree import UpliftRandomForestClassifier\n",
    "from causalml.metrics import plot_gain\n",
    "\n",
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.333761Z",
     "start_time": "2021-11-29T22:50:05.324150Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.14.0\n"
     ]
    }
   ],
   "source": [
    "import importlib\n",
    "print(importlib.metadata.version('causalml') )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate synthetic dataset\n",
    "\n",
    "The CausalML package contains various functions to generate synthetic datasets for uplift modeling. Here we generate a classification dataset using the make_uplift_classification() function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.418771Z",
     "start_time": "2021-11-29T22:50:05.356908Z"
    }
   },
   "outputs": [],
   "source": [
    "df, x_names = make_uplift_classification()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.625345Z",
     "start_time": "2021-11-29T22:50:05.422220Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>treatment_group_key</th>\n",
       "      <th>x1_informative</th>\n",
       "      <th>x2_informative</th>\n",
       "      <th>x3_informative</th>\n",
       "      <th>x4_informative</th>\n",
       "      <th>x5_informative</th>\n",
       "      <th>x6_irrelevant</th>\n",
       "      <th>x7_irrelevant</th>\n",
       "      <th>x8_irrelevant</th>\n",
       "      <th>x9_irrelevant</th>\n",
       "      <th>...</th>\n",
       "      <th>x12_uplift_increase</th>\n",
       "      <th>x13_increase_mix</th>\n",
       "      <th>x14_uplift_increase</th>\n",
       "      <th>x15_uplift_increase</th>\n",
       "      <th>x16_increase_mix</th>\n",
       "      <th>x17_uplift_increase</th>\n",
       "      <th>x18_uplift_increase</th>\n",
       "      <th>x19_increase_mix</th>\n",
       "      <th>conversion</th>\n",
       "      <th>treatment_effect</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>control</td>\n",
       "      <td>-0.542888</td>\n",
       "      <td>1.976361</td>\n",
       "      <td>-0.531359</td>\n",
       "      <td>-2.354211</td>\n",
       "      <td>-0.380629</td>\n",
       "      <td>-2.614321</td>\n",
       "      <td>-0.128893</td>\n",
       "      <td>0.448689</td>\n",
       "      <td>-2.275192</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.315304</td>\n",
       "      <td>0.742654</td>\n",
       "      <td>1.891699</td>\n",
       "      <td>-2.428395</td>\n",
       "      <td>1.541875</td>\n",
       "      <td>-0.817705</td>\n",
       "      <td>-0.610194</td>\n",
       "      <td>-0.591581</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>treatment3</td>\n",
       "      <td>0.258654</td>\n",
       "      <td>0.552412</td>\n",
       "      <td>1.434239</td>\n",
       "      <td>-1.422311</td>\n",
       "      <td>0.089131</td>\n",
       "      <td>0.790293</td>\n",
       "      <td>1.159513</td>\n",
       "      <td>1.578868</td>\n",
       "      <td>0.166540</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.391878</td>\n",
       "      <td>-0.623243</td>\n",
       "      <td>2.443972</td>\n",
       "      <td>-2.889253</td>\n",
       "      <td>2.018585</td>\n",
       "      <td>-1.109296</td>\n",
       "      <td>-0.380362</td>\n",
       "      <td>-1.667606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>treatment1</td>\n",
       "      <td>1.697012</td>\n",
       "      <td>-2.762600</td>\n",
       "      <td>-0.662874</td>\n",
       "      <td>-1.682340</td>\n",
       "      <td>1.217443</td>\n",
       "      <td>0.837982</td>\n",
       "      <td>1.042981</td>\n",
       "      <td>0.177398</td>\n",
       "      <td>-0.112409</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.132497</td>\n",
       "      <td>1.050179</td>\n",
       "      <td>1.573054</td>\n",
       "      <td>-1.788427</td>\n",
       "      <td>1.341609</td>\n",
       "      <td>-0.749227</td>\n",
       "      <td>-2.091521</td>\n",
       "      <td>-0.471386</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>treatment2</td>\n",
       "      <td>-1.441644</td>\n",
       "      <td>1.823648</td>\n",
       "      <td>0.789423</td>\n",
       "      <td>-0.295398</td>\n",
       "      <td>0.718509</td>\n",
       "      <td>-0.492993</td>\n",
       "      <td>0.947824</td>\n",
       "      <td>-1.307887</td>\n",
       "      <td>0.123340</td>\n",
       "      <td>...</td>\n",
       "      <td>-2.084619</td>\n",
       "      <td>0.058481</td>\n",
       "      <td>1.369439</td>\n",
       "      <td>0.422538</td>\n",
       "      <td>1.087176</td>\n",
       "      <td>-0.966666</td>\n",
       "      <td>-1.785592</td>\n",
       "      <td>-1.268379</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>control</td>\n",
       "      <td>-0.625074</td>\n",
       "      <td>3.002388</td>\n",
       "      <td>-0.096288</td>\n",
       "      <td>1.938235</td>\n",
       "      <td>3.392424</td>\n",
       "      <td>-0.465860</td>\n",
       "      <td>-0.919897</td>\n",
       "      <td>-1.072592</td>\n",
       "      <td>-1.331181</td>\n",
       "      <td>...</td>\n",
       "      <td>-1.403984</td>\n",
       "      <td>0.760430</td>\n",
       "      <td>1.917635</td>\n",
       "      <td>-2.347675</td>\n",
       "      <td>1.560946</td>\n",
       "      <td>-0.833067</td>\n",
       "      <td>-1.407884</td>\n",
       "      <td>-0.781343</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  treatment_group_key  x1_informative  x2_informative  x3_informative  \\\n",
       "0             control       -0.542888        1.976361       -0.531359   \n",
       "1          treatment3        0.258654        0.552412        1.434239   \n",
       "2          treatment1        1.697012       -2.762600       -0.662874   \n",
       "3          treatment2       -1.441644        1.823648        0.789423   \n",
       "4             control       -0.625074        3.002388       -0.096288   \n",
       "\n",
       "   x4_informative  x5_informative  x6_irrelevant  x7_irrelevant  \\\n",
       "0       -2.354211       -0.380629      -2.614321      -0.128893   \n",
       "1       -1.422311        0.089131       0.790293       1.159513   \n",
       "2       -1.682340        1.217443       0.837982       1.042981   \n",
       "3       -0.295398        0.718509      -0.492993       0.947824   \n",
       "4        1.938235        3.392424      -0.465860      -0.919897   \n",
       "\n",
       "   x8_irrelevant  x9_irrelevant  ...  x12_uplift_increase  x13_increase_mix  \\\n",
       "0       0.448689      -2.275192  ...            -1.315304          0.742654   \n",
       "1       1.578868       0.166540  ...            -1.391878         -0.623243   \n",
       "2       0.177398      -0.112409  ...            -1.132497          1.050179   \n",
       "3      -1.307887       0.123340  ...            -2.084619          0.058481   \n",
       "4      -1.072592      -1.331181  ...            -1.403984          0.760430   \n",
       "\n",
       "   x14_uplift_increase  x15_uplift_increase  x16_increase_mix  \\\n",
       "0             1.891699            -2.428395          1.541875   \n",
       "1             2.443972            -2.889253          2.018585   \n",
       "2             1.573054            -1.788427          1.341609   \n",
       "3             1.369439             0.422538          1.087176   \n",
       "4             1.917635            -2.347675          1.560946   \n",
       "\n",
       "   x17_uplift_increase  x18_uplift_increase  x19_increase_mix  conversion  \\\n",
       "0            -0.817705            -0.610194         -0.591581           0   \n",
       "1            -1.109296            -0.380362         -1.667606           0   \n",
       "2            -0.749227            -2.091521         -0.471386           0   \n",
       "3            -0.966666            -1.785592         -1.268379           1   \n",
       "4            -0.833067            -1.407884         -0.781343           0   \n",
       "\n",
       "   treatment_effect  \n",
       "0                 0  \n",
       "1                 0  \n",
       "2                 0  \n",
       "3                 1  \n",
       "4                 0  \n",
       "\n",
       "[5 rows x 22 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.706496Z",
     "start_time": "2021-11-29T22:50:05.628896Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>mean</th>\n",
       "      <th>size</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>conversion</th>\n",
       "      <th>conversion</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>treatment_group_key</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>control</th>\n",
       "      <td>0.511</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>treatment1</th>\n",
       "      <td>0.514</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>treatment2</th>\n",
       "      <td>0.559</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>treatment3</th>\n",
       "      <td>0.600</td>\n",
       "      <td>1000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>All</th>\n",
       "      <td>0.546</td>\n",
       "      <td>4000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          mean       size\n",
       "                    conversion conversion\n",
       "treatment_group_key                      \n",
       "control                  0.511       1000\n",
       "treatment1               0.514       1000\n",
       "treatment2               0.559       1000\n",
       "treatment3               0.600       1000\n",
       "All                      0.546       4000"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Look at the conversion rate and sample size in each group\n",
    "df.pivot_table(values='conversion',\n",
    "               index='treatment_group_key',\n",
    "               aggfunc=[np.mean, np.size],\n",
    "               margins=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Run the uplift random forest classifier\n",
    "\n",
    "In this section, we first fit the uplift random forest classifier using training data. We then use the fitted model to make a prediction using testing data. The prediction returns an ndarray in which each column contains the predicted uplift if the unit was in the corresponding treatment group."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.718980Z",
     "start_time": "2021-11-29T22:50:05.709984Z"
    }
   },
   "outputs": [],
   "source": [
    "# Split data to training and testing samples for model validation (next section)\n",
    "df_train, df_test = train_test_split(df, test_size=0.2, random_state=111)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:05.730508Z",
     "start_time": "2021-11-29T22:50:05.726345Z"
    }
   },
   "outputs": [],
   "source": [
    "from causalml.inference.tree import UpliftTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:07.480838Z",
     "start_time": "2021-11-29T22:50:05.735710Z"
    }
   },
   "outputs": [],
   "source": [
    "clf = UpliftTreeClassifier(control_name='control')\n",
    "clf.fit(df_train[x_names].values,\n",
    "         treatment=df_train['treatment_group_key'].values,\n",
    "         y=df_train['conversion'].values)\n",
    "p = clf.predict(df_test[x_names].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:07.501614Z",
     "start_time": "2021-11-29T22:50:07.484453Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>control</th>\n",
       "      <th>treatment1</th>\n",
       "      <th>treatment2</th>\n",
       "      <th>treatment3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.506394</td>\n",
       "      <td>0.511811</td>\n",
       "      <td>0.573935</td>\n",
       "      <td>0.503778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.506394</td>\n",
       "      <td>0.511811</td>\n",
       "      <td>0.573935</td>\n",
       "      <td>0.503778</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.580838</td>\n",
       "      <td>0.458824</td>\n",
       "      <td>0.508982</td>\n",
       "      <td>0.452381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.482558</td>\n",
       "      <td>0.572327</td>\n",
       "      <td>0.556757</td>\n",
       "      <td>0.961538</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.482558</td>\n",
       "      <td>0.572327</td>\n",
       "      <td>0.556757</td>\n",
       "      <td>0.961538</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    control  treatment1  treatment2  treatment3\n",
       "0  0.506394    0.511811    0.573935    0.503778\n",
       "1  0.506394    0.511811    0.573935    0.503778\n",
       "2  0.580838    0.458824    0.508982    0.452381\n",
       "3  0.482558    0.572327    0.556757    0.961538\n",
       "4  0.482558    0.572327    0.556757    0.961538"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_res = pd.DataFrame(p, columns=clf.classes_)\n",
    "df_res.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:07.512472Z",
     "start_time": "2021-11-29T22:50:07.506400Z"
    }
   },
   "outputs": [],
   "source": [
    "uplift_model = UpliftRandomForestClassifier(control_name='control')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:15.933473Z",
     "start_time": "2021-11-29T22:50:07.517749Z"
    }
   },
   "outputs": [],
   "source": [
    "uplift_model.fit(df_train[x_names].values,\n",
    "                 treatment=df_train['treatment_group_key'].values,\n",
    "                 y=df_train['conversion'].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.165287Z",
     "start_time": "2021-11-29T22:50:15.938369Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(800, 9)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>control</th>\n",
       "      <th>treatment1</th>\n",
       "      <th>treatment2</th>\n",
       "      <th>treatment3</th>\n",
       "      <th>recommended_treatment</th>\n",
       "      <th>delta_treatment1</th>\n",
       "      <th>delta_treatment2</th>\n",
       "      <th>delta_treatment3</th>\n",
       "      <th>max_delta</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.415263</td>\n",
       "      <td>0.401823</td>\n",
       "      <td>0.465554</td>\n",
       "      <td>0.391658</td>\n",
       "      <td>2</td>\n",
       "      <td>-0.013440</td>\n",
       "      <td>0.050291</td>\n",
       "      <td>-0.023605</td>\n",
       "      <td>0.050291</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.412962</td>\n",
       "      <td>0.389346</td>\n",
       "      <td>0.476169</td>\n",
       "      <td>0.363343</td>\n",
       "      <td>2</td>\n",
       "      <td>-0.023616</td>\n",
       "      <td>0.063206</td>\n",
       "      <td>-0.049619</td>\n",
       "      <td>0.063206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.533442</td>\n",
       "      <td>0.548670</td>\n",
       "      <td>0.589756</td>\n",
       "      <td>0.588654</td>\n",
       "      <td>2</td>\n",
       "      <td>0.015228</td>\n",
       "      <td>0.056313</td>\n",
       "      <td>0.055212</td>\n",
       "      <td>0.056313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.344854</td>\n",
       "      <td>0.314433</td>\n",
       "      <td>0.370315</td>\n",
       "      <td>0.760676</td>\n",
       "      <td>3</td>\n",
       "      <td>-0.030420</td>\n",
       "      <td>0.025461</td>\n",
       "      <td>0.415822</td>\n",
       "      <td>0.415822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.649657</td>\n",
       "      <td>0.602642</td>\n",
       "      <td>0.641364</td>\n",
       "      <td>0.851301</td>\n",
       "      <td>3</td>\n",
       "      <td>-0.047015</td>\n",
       "      <td>-0.008293</td>\n",
       "      <td>0.201644</td>\n",
       "      <td>0.201644</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    control  treatment1  treatment2  treatment3  recommended_treatment  \\\n",
       "0  0.415263    0.401823    0.465554    0.391658                      2   \n",
       "1  0.412962    0.389346    0.476169    0.363343                      2   \n",
       "2  0.533442    0.548670    0.589756    0.588654                      2   \n",
       "3  0.344854    0.314433    0.370315    0.760676                      3   \n",
       "4  0.649657    0.602642    0.641364    0.851301                      3   \n",
       "\n",
       "   delta_treatment1  delta_treatment2  delta_treatment3  max_delta  \n",
       "0         -0.013440          0.050291         -0.023605   0.050291  \n",
       "1         -0.023616          0.063206         -0.049619   0.063206  \n",
       "2          0.015228          0.056313          0.055212   0.056313  \n",
       "3         -0.030420          0.025461          0.415822   0.415822  \n",
       "4         -0.047015         -0.008293          0.201644   0.201644  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_res = uplift_model.predict(df_test[x_names].values, full_output=True)\n",
    "print(df_res.shape)\n",
    "df_res.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.335654Z",
     "start_time": "2021-11-29T22:50:16.168633Z"
    }
   },
   "outputs": [],
   "source": [
    "y_pred = uplift_model.predict(df_test[x_names].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.345724Z",
     "start_time": "2021-11-29T22:50:16.339770Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(800, 3)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.366023Z",
     "start_time": "2021-11-29T22:50:16.349715Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>treatment1</th>\n",
       "      <th>treatment2</th>\n",
       "      <th>treatment3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.013440</td>\n",
       "      <td>0.050291</td>\n",
       "      <td>-0.023605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.023616</td>\n",
       "      <td>0.063206</td>\n",
       "      <td>-0.049619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.015228</td>\n",
       "      <td>0.056313</td>\n",
       "      <td>0.055212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.030420</td>\n",
       "      <td>0.025461</td>\n",
       "      <td>0.415822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.047015</td>\n",
       "      <td>-0.008293</td>\n",
       "      <td>0.201644</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   treatment1  treatment2  treatment3\n",
       "0   -0.013440    0.050291   -0.023605\n",
       "1   -0.023616    0.063206   -0.049619\n",
       "2    0.015228    0.056313    0.055212\n",
       "3   -0.030420    0.025461    0.415822\n",
       "4   -0.047015   -0.008293    0.201644"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Put the predictions to a DataFrame for a neater presentation\n",
    "# The output of `predict()` is a numpy array with the shape of [n_sample, n_treatment] excluding the\n",
    "# predictions for the control group.\n",
    "result = pd.DataFrame(y_pred,\n",
    "                      columns=uplift_model.classes_[1:])\n",
    "result.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create the uplift curve\n",
    "\n",
    "The performance of the model can be evaluated with the help of the [uplift curve](http://proceedings.mlr.press/v67/gutierrez17a/gutierrez17a.pdf). "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create a synthetic population\n",
    "\n",
    "The uplift curve is calculated on a synthetic population that consists of those that were in the control group and those who happened to be in the treatment group recommended by the model. We use the synthetic population to calculate the _actual_ treatment effect within _predicted_ treatment effect quantiles. Because the data is randomized, we have a roughly equal number of treatment and control observations in the predicted quantiles and there is no self selection to treatment groups."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.383725Z",
     "start_time": "2021-11-29T22:50:16.369277Z"
    }
   },
   "outputs": [],
   "source": [
    "# If all deltas are negative, assing to control; otherwise assign to the treatment\n",
    "# with the highest delta\n",
    "best_treatment = np.where((result < 0).all(axis=1),\n",
    "                           'control',\n",
    "                           result.idxmax(axis=1))\n",
    "\n",
    "# Create indicator variables for whether a unit happened to have the\n",
    "# recommended treatment or was in the control group\n",
    "actual_is_best = np.where(df_test['treatment_group_key'] == best_treatment, 1, 0)\n",
    "actual_is_control = np.where(df_test['treatment_group_key'] == 'control', 1, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.394029Z",
     "start_time": "2021-11-29T22:50:16.388132Z"
    }
   },
   "outputs": [],
   "source": [
    "synthetic = (actual_is_best == 1) | (actual_is_control == 1)\n",
    "synth = result[synthetic]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculate the observed treatment effect per predicted treatment effect quantile\n",
    "\n",
    "We use the observed treatment effect to calculate the uplift curve, which answers the question: how much of the total cumulative uplift could we have captured by targeting a subset of the population sorted according to the predicted uplift, from highest to lowest?\n",
    "\n",
    "CausalML has the plot_gain() function which calculates the uplift curve given a DataFrame containing the treatment assignment, observed outcome and the predicted treatment effect."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.410032Z",
     "start_time": "2021-11-29T22:50:16.397723Z"
    }
   },
   "outputs": [],
   "source": [
    "auuc_metrics = (synth.assign(is_treated = 1 - actual_is_control[synthetic],\n",
    "                             conversion = df_test.loc[synthetic, 'conversion'].values,\n",
    "                             uplift_tree = synth.max(axis=1))\n",
    "                     .drop(columns=list(uplift_model.classes_[1:])))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2021-11-29T22:50:16.939274Z",
     "start_time": "2021-11-29T22:50:16.413940Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_gain(auuc_metrics, outcome_col='conversion', treatment_col='is_treated')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "causal3.9",
   "language": "python",
   "name": "causal3.9"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
